1. Field of the Invention
This invention relates to the field of data processing systems. More particularly, this invention relates to data processing systems having a programmable general purpose processor and a hardware accelerator.
2. Description of the Prior Art
It is known to provide systems combining a programmable general purpose processor with a hardware accelerator. Such systems may share a memory system in order to facilitate the sharing of data values. With such an arrangement, there is a requirement to coordinate the manipulation and management of the data values stored within the memory system. As an example, processing being performed by the programmable general purpose processor may require the paging in and paging out of regions of memory which are also being accessed by the hardware accelerator. If such paging operations were performed without taking into account the requirements of the hardware accelerator, then data required by the hardware accelerator may be inappropriately paged out, and perhaps more seriously data which has been modified by the hardware accelerator, but not yet run back to the memory system, may have the out-of-date memory system copy of that data paged out resulting in incorrect values being held for those data values.
In order to address these issues, it is known to provide an operating system executing on the programmable general purpose computer which is able to control and coordinate memory management so as to take into account the requirements and the state of both the processor and the hardware accelerator. Using the operating system in this way requires that it be modified as to be able to appropriately handle the requirements of the hardware accelerator and the data generated by the hardware accelerator. There are a wide variety of different forms of hardware accelerator which may be provided with these different forms being targeted at different potential uses of the system. As an example, a hardware accelerator directed toward encryption may be provided in one system and a hardware accelerator significantly differing in form and directed towards another use, such as video processing may be provided in another system. Having separate operating systems, or versions each capable of dealing with these differing hardware accelerators or even a single operating system able to deal with a wide variety of different hardware accelerators is a significant practical difficulty. As a new hardware accelerator is developed for a new purpose, then operating system code would need to be modified and revalidated in order to support such a new hardware accelerator. This is time consuming, expensive and may be impractical in the case a low volume product.